﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web.UI.WebControls;

namespace BO
{
    public class ParametroBO
    {
        #region Contrutores

        public ParametroBO() 
        {
           
        }

        #endregion

        #region Leitores
        public static DropDownList Listar(DropDownList ddl)
        {
            try
            {
                var bco = new ModeloContainer();
                var objs = (from a in bco.Parametroes
                            orderby a.id ascending
                            select new
                            {
                                Código = a.id,
                                Descrição = a.chave
                            }).ToList();
                ddl.DataSource = objs;
                ddl.DataTextField = "Descrição";
                ddl.DataValueField = "Código";
                ddl.DataBind();
                ddl.Items.Insert(0, "- -");
                return ddl;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message.ToString());
            }
        }
        public static List<Parametro> Listar(int vID, string vChave)
        {
            try
            {
                ModeloContainer bco = new ModeloContainer();

                List<Parametro> objs = (from a in bco.Parametroes where a.id == a.id select a).ToList();

                if (vID != 0)
                {
                    objs = (from a in objs where a.id == vID select a).ToList();
                }

                if (!string.IsNullOrEmpty(vChave))
                {
                    objs = (from a in objs where a.chave.ToLower().Contains(vChave.ToLower()) select a).ToList();
                }

              

                return objs;
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public static Parametro Selecionar(int vID)
        {
            try
            {
                ModeloContainer bco = new ModeloContainer();

                Parametro obj = bco.Parametroes.FirstOrDefault(x => x.id == vID);
                if (obj == null)
                    throw new Exception("Parametro não localizado");
                else
                    return obj;
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        #endregion

        #region Modificadores

        public static Parametro Salvar(Parametro obj, int userID)
        {
            try
            {
                var bco = new ModeloContainer();

                if (obj.id == 0)
                {
                    bco.Parametroes.AddObject(obj);
                    bco.SaveChanges();
                }
                else
                {
                    Parametro objNovo = bco.Parametroes.FirstOrDefault(g => g.id == obj.id);

                    objNovo.chave = obj.chave;
                    objNovo.valor = obj.valor;

                    bco.SaveChanges();
                }
                return obj;
            }

            catch (Exception)
            {
                throw;
            }
        }
        public static void Excluir(int id, int userID)
        {
            try
            {
                var bco = new ModeloContainer();

                Parametro obj = bco.Parametroes.FirstOrDefault(g => g.id == id);

                if (obj != null)
                {
                    bco.Parametroes.DeleteObject(obj);
                    bco.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                if (ex.Message.ToLower().Contains("constraint"))
                    throw new Exception("Impossivel realizar exclusão, pois há registros relacionados a este Parametro!");
                else
                    throw new Exception("Deletar - " + ex.Message.ToString());
            }
        }
        #endregion
    }
}
